package com.angel.arquitectura.model.event;

import com.angel.arquitectura.model.common.PersistentObject;
import com.angel.arquitectura.model.objectId.ObjectIdUtils;
import org.apache.log4j.Logger;
import org.hibernate.event.PreUpdateEvent;
import org.hibernate.event.PreUpdateEventListener;

/**
 * Clase que implementa el listener utilizado por hibernate en los updates
 * Permite interceptar todo update y ejecutar acciones previamente.
 * 
 * @author IFritzler
 *
 */
public class SecurityPreUpdateEventListener implements PreUpdateEventListener {

	private static final long serialVersionUID = 1L;
	
	private static final Logger logger = Logger.getLogger(SecurityPreUpdateEventListener.class);
	
	public boolean onPreUpdate(PreUpdateEvent event) {
        PersistentObject persistentObject = (PersistentObject) event.getEntity();
        if(persistentObject.getId() == null){
            persistentObject.setId(ObjectIdUtils.createObjectId());
        }
        logger.debug("SecurityPreUpdateEventListener");
		return false;
	}

}
